'''
    作者：刘妍
    版本：3.0
    日期：18/05/2020
    1.0功能：计算空气质量指数AQI
    2.0新增功能：读取已经获取的JSON数据文件，并将AQI前5的数据输出到文件
    3.0新增功能：读取已经获取的JSON数据文件，并将其转换为CSV文件
'''

import json
import csv

# 自定义函数，解码JSON文件
def read_jsonfile(filepath):
    f = open(filepath, mode='r', encoding='utf-8')
    city_list = json.load(f)
    f.close()
    return city_list


# 自定义函数，将AQI前5的数据输出到csv文件中
def write_csvfile(top5_list):
    # 定义一个空的列表
    lines = []
    # 得到第一个对象的所有键，作为csv文件的第一行
    lines.append(list(top5_list[0].keys()))
    for position in top5_list:
        lines.append(list(position.values()))

    f = open('top5_aqi.csv', 'w', encoding='utf-8', newline='')
    writer = csv.writer(f)
    for line in lines:
        writer.writerow(line)
    f.close()


def main():
    filepath = input('请输入json文件名称：')
    # 调用解码函数，读取JSON文件
    city_list = read_jsonfile(filepath)
    # 得到升序排列的city_list
    city_list.sort(key=lambda city: city['aqi'])
    top5_list = city_list[:5]

    # 将top5_list.json文件中的数据写入到csv文件中
    write_csvfile(top5_list)


if __name__ == '__main__':
    main()